In general, a virtualized platform is a single physical platform that is segregated into a plurality of virtual machines (VMs). The physical platform incorporates at least one virtual machine monitor (VMM). A conventional VMM typically runs on a computer and presents to other software the abstraction of one or more virtual machines. Each virtual machine may function as a self-contained platform, running its own “guest operating system” (i.e., an operating system (OS) hosted by the VMM) and other software, collectively referred to as guest software.
Processes running within a virtual machine are provided with an abstraction of some hardware resources and may be unaware of other virtual machines within the system. A hypervisor provides the visualization abstraction of computer systems underneath it. Every virtual machine assumes that it has full control over the hardware resources allocated to it.
The VMM is an entity that is responsible for appropriately managing and arbitrating system resources among the virtual machines including, but not limited to, hard drives, processors, input/out (I/O) devices and memory. Currently a hard drive that is shared between multiple virtual machines requires that the VMM trap all requests or commands destined for the hard drive. Otherwise, the various virtual machines may have programmed different settings for the hard drive that can be detrimental to one or more of the virtual machines. An example is when virtual machines have different settings for the size of data blocks to be transferred. Here, if requests or commands are not trapped by the VMM, a hang condition may result for the virtual machine whose setting is not observed by the hard drive.